#include <sys/types.h> 
#include <unistd.h> 
#include <stdio.h> 
#include <stdlib.h> 
/* 파이프로부터 문자들을 읽고 그들은 표준 출력에 출력하라 */ 
void read_from_pipe (int file) 
{ 
FILE *stream; 
int c; 
stream = fdopen (file, "r"); 
while ((c = fgetc (stream)) != EOF) 
putchar (c); 
fclose (stream); 
} 
/* 파이프에 어떤 텍스트를 써라 */ 
void write_to_pipe (int file) 
{ 
FILE *stream; 
stream = fdopen (file, "w"); 
fprintf (stream, "hello, world!\n"); 
fprintf (stream, "goodbye, world!\n"); 
fclose (stream); 
} 
int main (void) 
{ 
pid_t pid; 
int mypipe[2]; 
/* 파이프를 만들어라 */ 
if (pipe (mypipe)) { 
fprintf (stderr, "Pipe failed. \n"); 
return EXIT_FAILURE; 
} 
/* 자식 프로세스를 만들어라 */ 
if ((pid = fork ()) == 0) { /* 이것은 자식 프로세스이다. */ 
read_from_pipe (mypipe[0]); 
return EXIT_SUCCESS; 
} else if (pid < 0) { 
/* fork가 실패했다. */ 
fprintf (stderr, "Fork failed. \n"); 
return EXIT_FAILURE; 
} else { /* 이것은 부모 프로세스이다. */ 
write_to_pipe (mypipe[1]); 
return EXIT_SUCCESS; 
} 
} 

